package com.ticket.sass.common.ticketserver.platform.cx300

import com.ticket.sass.common.ticketserver.configure.ConfigData
import org.springframework.util.DigestUtils
import java.security.MessageDigest

class Configurer {
    companion object {
        /**
         * 测试环境地址
         */
        const val ENDPOINT_TICKET = "http://124.221.145.77:1121/gdcws.asmx"

        /**
         * 正式环境地址
         */
        const val NAMESPACE_TICKET = "http://tempuri.org/"

        fun generateTicketSign(config: ConfigData.CX300, params: List<String>): String {
            val info = params.joinToString("") + config.secret

            return md5Hash(info)
        }

        private fun md5Hash(convertString: String): String {
            // 将字符串转换为小写
            val lowerCaseString = convertString.lowercase()

            // 创建 MD5 信息摘要对象
            val md = MessageDigest.getInstance("MD5")

            // 计算哈希值
            val hashBytes = md.digest(lowerCaseString.toByteArray(Charsets.UTF_8))

            // 提取哈希值的第 4 到第 12 个字节，并转换为十六进制字符串
            val hashSegment = hashBytes.sliceArray(4 until 12).joinToString("") {
                String.format("%02x", it)
            }

            return hashSegment
        }
    }
}